package ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.entrega1;

import junit.framework.Assert;

import org.joda.time.DateTime;
import org.junit.Test;

import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.Captura;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.Image;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.TipoInfraccion;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.capturas.Zona;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.categorias.Categoria;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.categorias.Evasor;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.categorias.InfractorFrecuente;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.categorias.Inhabilitado;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.externos.VerificadorDePagos;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.homes.AdministradorCategorias;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.mockObjects.VerificadorPagos;
import ar.edu.utn.frba.tadp.tp.grupo4.fotomultas.vehiculos.Vehiculo;

import org.uqbar.commons.utils.ApplicationContext;

public class Punto1TestCase {
	
	@Test
	public void VerificarInfraccionTestCase(){
		
		TipoInfraccion unaInfraccion = new TipoInfraccion("Mal Estacionamiento", 10, 200);
		Zona unaZona = new Zona("Zona Roja", "12345678");
		Image unaFotito = new Image();
		
		Captura unaCaptura = new Captura(unaZona, unaInfraccion, unaFotito, new DateTime());
		//VerificadorDePagos verificadorPagos = new VerificadorPagos();
		ApplicationContext.getInstance().configureSingleton(VerificadorDePagos.class, new VerificadorPagos());
		
		//AdministradorCategorias adCat = new AdministradorCategorias();
		ApplicationContext.getInstance().configureSingleton(AdministradorCategorias.class, new AdministradorCategorias());
		AdministradorCategorias adCat = ApplicationContext.getInstance().getSingleton(AdministradorCategorias.class);

		//Vehiculo unVehiculo = new Vehiculo("ABC 123", adCat, verificadorPagos);
		Vehiculo unVehiculo = new Vehiculo("ABC 123");
		
		Categoria evasor = new Evasor();
		Categoria inhabilitado = new Inhabilitado();
		Categoria iFrecuente = new InfractorFrecuente();
		
		adCat.addCategoria(evasor);
		adCat.addCategoria(inhabilitado);
		adCat.addCategoria(iFrecuente);
		
		unVehiculo.addCaptura(unaCaptura);
		
		Assert.assertEquals(90, unVehiculo.getPuntosRegistro());
		Assert.assertEquals(200.0, unVehiculo.getMontoMultas());
		
	}

}